
package com.eva.framework.utils;

import com.eva.epc.common.util.EException;

/**
 * <p>
 * 一些典型异常的实用工厂类.
 * </p>
 *
 * @author Jack Jiang(http://www.52im.net/space-uid-1.html)
 * @version 1.0
 */
public class EndsExceptionFactory {
    /**
     * 无效的PROCESSOR_ID
     */
    public static EException INVALID_PROCESSOR_ID(int PROCESSOR_ID) {
        return new EException("服务端找不到对应的处理器,本次操作失败."
                , "无效的PROCESSOR_ID, PROCESSOR_ID=" + PROCESSOR_ID + "!");
    }

    /**
     * 无效的JOB_DISPATCHER_ID
     */
    public static EException INVALID_JOB_DISPATCHER_ID(int JOB_DISPATCHER_ID) {
        return new EException("服务端找不到对应的调度器,本次操作失败."
                , "无效的JOB_DISPATCHER_ID, JOB_DISPATCHER_ID=" + JOB_DISPATCHER_ID + "!");
    }

    /**
     * 无效的ACTION_ID
     */
    public static EException INVALID_ACTION_ID(int ACTION_ID) {
        return new EException("服务端找不到对应的处理动作,本次操作失败."
                , "无效的ACTION_ID, ACTION_ID=" + ACTION_ID + "!");
    }

    /**
     * 登陆用户会话超时或失效
     */
    public static EException USER_SESSION_TIMEOUT() {
        return new ESessionTimeoutException("由于会话已正常失效, 请请新登陆后再行操作."
                , "当前会话已失效，<b>原因可能是</b>：" +
                "<br>1) 您已经登陆过，但服务器在稍后进行过重新启动; " +
                "<br>2) 您已登陆但因长时间未作任何操作服务器为了减少服务开支而中断了与你的会话;" +
                "<br>3) 其它原因." +
                "<br><b>解决方法：</b>请重新登陆，谢谢.");
    }

    /**
     * 登陆时用户名密码有误将出现该提示
     */
    public static EException INVALID_USER(String login_name) {
        return new EException("账号和密码可能不正确，登陆失败， 请重试."
                , "用户名" +
                login_name +
                "本次登陆失败 ，<b>原因可能是</b>：" +
                "<br>1) 用户名不存在; " +
                "<br>2) 用户名存在但已经被管理员设置成无效（此状态下将会禁止登陆）;" +
                "<br>3) 用户名存在，查您输错了密码." +
                "<br><b>解决方法：</b>请确认无误后再试或联系系统管理员核实，谢谢.");
    }


    /**
     * 用于用户登陆成功后的会话超时时.
     *
     * @author Jack Jiang, 2013-08-25
     * @version 1.0
     */
    public static class ESessionTimeoutException extends EException {
        public ESessionTimeoutException(String message) {
            super(message);
        }

        public ESessionTimeoutException(String shortMessage, String message) {
            super(shortMessage, message);
        }

        public ESessionTimeoutException(String shortMessage, String message, Throwable cause) {
            super(shortMessage, message, cause);
        }
    }
}